<?php

namespace app\common\model\gifts;
use app\common\model\BaseModel;
use app\common\enum\order\PayStatus as PayStatusEnum;
use app\common\enum\order\WriteStatus as WriteStatusEnum;
use app\common\enum\order\IsExpire as IsExpireEnum;

use think\Hook;

/**
 * 用户优惠券模型
 * Class UserCoupon
 * @package app\common\model
 */
class UserGifts extends BaseModel
{
    protected $name = 'user_gifts';

    protected $updateTime = false;
    /**
     * 订单模型初始化
     */
    public static function init()
    {
        parent::init();
        // 监听优惠券处理事件
        $static = new static;
        Hook::listen('UserGifts', $static);
    }

    /**
     * 关联用户表
     * @return \think\model\relation\BelongsTo
     */
    public function user()
    {
        return $this->belongsTo("app\\common\\model\\User");
    }

    /**
     * 关联商品图片表
     * @return \think\model\relation\HasMany
     */
    public function image()
    {
        return $this->hasOne('app\\common\\model\\UploadFile', 'file_id', 'image_id');
    }


    /**
     * 付款状态
     * @param $value
     * @return array
     */
    public function getPayStatusAttr($value)
    {
        return ['text' => PayStatusEnum::data()[$value]['name'], 'value' => $value];
    }


    /**
     * 核销状态
     * @param $value
     * @return array
     */
    public function getWriteStatusAttr($value)
    {
        return ['text' => WriteStatusEnum::data()[$value]['name'], 'value' => $value];
    }


    /**
     * 过期状态
     * @param $value
     * @return array
     */
    public function getIsExpireAttr($value)
    {
        return ['text' => IsExpireEnum::data()[$value]['name'], 'value' => $value];
    }




      /**
     * 有效期-开始时间
     * @param $value
     * @return mixed
     */
    public function getStartTimeAttr($value)
    {
        return ['text' => date('Y-m-d', $value), 'value' =>  date('Y-m-d', $value)];
    }

    /**
     * 有效期-结束时间
     * @param $value
     * @return mixed
     */
    public function getEndTimeAttr($value)
    {
        return ['text' => date('Y-m-d', $value), 'value' => date('Y-m-d', $value)];
    }

    /**
     * 优惠券详情
     * @param $coupon_id
     * @return null|static
     * @throws \think\exception\DbException
     */
    public static function detail($coupon_id)
    {
        return static::get($coupon_id);
    }

    /**
     * 设置优惠券使用状态
     * @param int $couponId 用户的优惠券id
     * @param bool $isUse 是否已使用
     * @return false|int
     */
    public static function setIsUse($couponId, $isUse = true)
    {
        return (new static)->save(['is_use' => (int)$isUse], ['user_coupon_id' => $couponId]);
    }

}